# -*- coding: utf-8 -*-#
# ----------------------------------------*_*
# Author:       Chasetity
# Date:         2021/6/28
# ----------------------------------------*_*

#  性能测试案例


# import locust

from locust import HttpUser , TaskSet, task


# 2.定义任务集（用户行为类，继承TaskSet）
class UserBehavior(TaskSet):

    def on_start(self):
        print('在所有脚本执行前执行')
        print("start")
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
        }

    def on_stop(self):
        print('在所有脚本执行后执行')

    # 1.定义任务（接口请求）

    @task
    def index(self):
        self.client.get('/',headers=self.headers)

    @task
    def login(self):
        login_path = '/index.php?s=/index/user/login.html'
        data = {
            "accounts": 'admin',
            "pwd": '123456',
            "type": 'username',
        }
        self.client.post(url=login_path, data=data,headers=self.headers)

    tasks = {
        index: 3,
        login: 1,
    }  # index和profile为之前定义的任务，3与1，表示index请求与profile请求数比例为3：1


# 3.定义一个Locust类，代表用户,继承HttpLocust
class WebsitUser(HttpUser):
    # task_set 不能修改，来设置任务集名称
    tasks = [UserBehavior]  # 前面定义的任务集,是一个列表
    max_wait = 3000  # 发送请求时，请求之间的最大时间间隔
    min_wait = 2000   # 发送请求时，请求之间的最小时间间隔
    host = 'http://localhost/shopxo'  #被测系统 URL
    # weight = 10  # 权重，当有多个用户类执行时，通过这个权重来控制不同用户类的请求数比例


# 命令行方式执行
# locust -f 脚本文件路径 --host=被测系统URL地址   #host路径可选
# locust -f PerformanceLocust.py
if __name__ == "__main__":
    import os
    os.system(f"locust -f {os.path.basename(__file__)}")
